package com.forum.ajax.homepage;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONException;
import org.json.JSONObject;

import com.forum.domain.Groups;
import com.forum.domain.Remind;
import com.forum.domain.RemindDAO;
import com.forum.domain.Reply;
import com.forum.domain.Topic;
import com.forum.domain.User;
import com.forum.domain.UserDAO;

public class GetRemindInfo extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public GetRemindInfo() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();

		String str_id = (String) request.getParameter("id");
		int id = Integer.parseInt(str_id);

		UserDAO ud = new UserDAO();
		User user = ud.findById(id);

		RemindDAO rd = new RemindDAO();
		List<Remind> remindlist = rd.findByProperty("userByUserToId",user.getUserid());
		JSONObject json = new JSONObject();
		try {
			json.accumulate("count", remindlist.size());

			for (int i = 0; i < remindlist.size(); i++) {
				Remind remind = remindlist.get(i);
				JSONObject remindjson = new JSONObject();
				
				User userFrom = remind.getUserByUserFromId();
				JSONObject userFromjson = new JSONObject();
				userFromjson.accumulate("id", userFrom.getUserid());
				userFromjson.accumulate("nickname", userFrom.getNickname());
				userFromjson.accumulate("realname", userFrom.getRealname());
				userFromjson.accumulate("intro", userFrom.getIntroduction());
				
				Topic topic = remind.getTopic();
				JSONObject topicjson = new JSONObject();
				topicjson.accumulate("id", topic.getId());
				topicjson.accumulate("title", topic.getTitle());
				topicjson.accumulate("owner", topic.getUser().getNickname());
				topicjson.accumulate("time", topic.getCreatetime().toGMTString());
				
				Groups group = topic.getGroups();
				JSONObject groupjson = new JSONObject();
				groupjson.accumulate("id", group.getId());
				groupjson.accumulate("name", group.getName());
				
				Reply reply = remind.getReply();
				JSONObject replyjson = new JSONObject();
				replyjson.accumulate("id", reply.getId());
				replyjson.accumulate("content", reply.getContent());
				replyjson.accumulate("time", reply.getTime().toGMTString());
				
				
				remindjson.accumulate("userFrom", userFromjson);
				remindjson.accumulate("topic", topicjson);
				remindjson.accumulate("group", groupjson);
				remindjson.accumulate("reply", replyjson);
				remindjson.accumulate("id", remind.getId());
				remindjson.accumulate("content", reply.getContent());
				
				json.append("remind", remindjson);
			}
			
			out.print(json.toString());
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *             if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
